Internet of Things (IoT) is essentially a network of a variety of devices, which through embedded sensors, other hardware, and software are able to communicate with each other over a data communication infrastructure according to a standard or specification. It is contemplated within IoT that devices such as refrigerators, thermostats, lighting appliances, vending machines, access-control devices, peripherals, and many other devices in everyday use (collectively referred to hereinafter as “device” or “devices”), will be able to communicate and interoperate with each other using such an infrastructure.
Each device in the IoT implements the necessary components to interoperate on the specified IoT infrastructure. It is very likely, and perhaps even desirable that many devices be available in the IoT to offer the same or similar services, or to offer a particular use to a user. A user should be able to select from the several devices, a device to use for the user's purpose.
Regardless of the amount of communication between the devices, and the availability of the devices' status to the user, there is often some glitch, some lack of information, or some actual circumstances of a device, which might prevent the use of that device by the user. Consider an office building as an example environment where several printers are operating as IoT devices. Presently, the printers can communicate a host of information to a user's computing device that wants to use one of those printers.
For example, a printer can presently inform a user's computer whether the printer is online or offline, a toner level in the printer, a status of consumables in a paper tray, a number of print jobs presently in the queue, and the like. In some cases, such information flows from a printer, through a print-server, over a data network, to a user's computer.
Regardless of the availability of such information, it is a very common situation in an office environment for a user to send a print job to an available online printer, which has sufficient toner and paper, walk to the printer to find an actual condition of the printer rendering the printer incapable of finishing the user's print job. For example, the user may find that the printer is actually offline—an actual condition of the printer, but an old or incompatible device driver on the user's computer caused an erroneous status indication on the user's computer. As another example, the user may find that while the printer reported as available, a job that was being printed at the time caused a paper jam in the printer—an actual condition of the printer—that was either not reported by the printer or was reported too late after the user had already selected the printer for sending the user's job.